import scrapy
from scrapy01.items import GameItem

class GameSpider(scrapy.Spider):
    # 爬虫名，唯一且必须
    name = 'game'

    # 允许访问的域名
    allowed_domains = ['4399.com']

    # 最开始访问的 URL
    start_urls = ['http://www.4399.com/flash/']

    def parse(self, response):
        """重写解析数据的函数"""

        # 拿到页面源代码
        html = response.text

        # 提取数据
        """
        response.json() # 获取 JSON数据
        response.xpath("") # 利用 XPath对数据进行解析
        response.css() # 利用 CSS选择器解析
        """

        # 获取 游戏名 -- 返回的是 选择器 Selector对象
        names = response.xpath('//ul[@class="n-game cf"]/li/a/b/text()')

        # 提取游戏名
        names = names.extract()

        # 分块提取数据
        li_list = response.xpath('//ul[@class="n-game cf"]/li')
        for li in li_list:
            ## 取游戏名
            # extract_first()：提取第一项，有则提取，无则跳过
            name = li.xpath('./a/b/text()').extract_first()

            # 取类别
            category = li.xpath('./em/a/text()').extract_first()

            # 取发布日期
            date = li.xpath('./em/text()').extract_first()

            item = GameItem()
            item['name'] = name
            item['category'] = category
            item['date'] = date

            # 需要用 yield 将数据传递给 管道pipelines.py
            yield item